#include <iostream>

using namespace std;

// C++另一种编程思想称为 泛型编程，主要利用的技术就是模板
// C++提供两种模板机制：函数模板和类模扳

// 函数模板  template<class T> 这个也可以， 没什么区别
template<typename T>
// 声明一个模板，告诉编译器后面代码中紧跟着T不要报错，T是通用类型
void mySwap(T &a, T &b) {
    T temp = a;
    a = b;
    b = temp;
}

void test01() {
    int a = 10;
    int b = 10;
    mySwap(a, b); // 自动类型推导

    mySwap<int>(a, b); // 显示指定类型

}

class Person {

};

template<class T>
bool my(T &a, T &b) {

}
//利用具体化Person的版本实现代码，具体化优先调用
template<> bool my(Person &pl, Person &p2) {
    return false;
}

int main() {

    test01();
}

